package cn.com.nes.site.service.product;

import cn.com.nes.mybatis.agent.ope.entity.ProductSeriesAndEnergy;
import cn.com.nes.site.entity.PageData;
import cn.com.nes.site.entity.dto.product.ProductSeriesAndEnergyDTO;
import cn.com.nes.site.entity.vo.product.DelProductSeriesAndEnergyVO;
import cn.com.nes.site.entity.vo.product.QueryProductSeriesAndEnergyPageVO;
import cn.com.nes.site.entity.vo.product.SaveProductSeriesAndEnergyVO;
import cn.com.nes.site.service.product.bo.QueryProductSeriesAndEnergyBO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 能源分类、品牌系列 Service
 *
 * @Author: ShenWei
 * @Date: 2024/03/26/16:15
 */
public interface ProductSeriesAndEnergyService extends IService<ProductSeriesAndEnergy> {

    /**
     * 保存能源分类和品牌系列
     */
    PageData saveProductSeriesAndEnergy(SaveProductSeriesAndEnergyVO vo);

    /**
     * 逻辑删除能源分类和品牌系列
     */
    PageData delProductSeriesAndEnergy(DelProductSeriesAndEnergyVO vo);

    /**
     * 已树结构查询能源分类和品牌系列
     */
    PageData getProductSeriesAndEnergyTree(QueryProductSeriesAndEnergyPageVO vo) throws Exception;

    /**
     * 查询全部子节点id
     */
    List<Long> getAllChildIds(Long parentId,Boolean enable);

    /**
     * 查询能源分类/品牌系列节点详情
     */
    ProductSeriesAndEnergyDTO getDetailById(Long id);

    /**
     * 查询能源分类/品牌系列节点列表
     */
    List<ProductSeriesAndEnergyDTO> getProductSeriesAndEnergyListByIdList(List<Long> idList);

    /**
     * 根据能源类型名称模糊查询节点id
     */
    List<Long> getEnergyIds(String nodeName, String companyId);

    /**
     * 查询能源分类列表 - 最末级
     */
    List<Map<String, String>> getSeriesConfigTemplate();

    /**
     * 查询能源分类id列表
     */
    List<ProductSeriesAndEnergyDTO> getEnergyClassification(QueryProductSeriesAndEnergyBO queryBO);

    /**
     * 处理能源分类id列表
     */
    Set<Long> handleEnergyIdList(List<ProductSeriesAndEnergyDTO> sourceList, Set<Long> productEnergyIdList);

    ProductSeriesAndEnergy getIdByNodeName(String name);

    ProductSeriesAndEnergy getbrandIdByBrandName(String brandName, String companyId);
}
